import vue from "@vitejs/plugin-vue";
import {createHtmlPlugin} from 'vite-plugin-html'
//@ts-ignore
import {UserConfig, ConfigEnv, loadEnv, defineConfig} from "vite";
import path from "path"
import inspect from 'vite-plugin-inspect'
import OneCode from './plugins/OneCode.ts'

const pathSrc = path.resolve(__dirname, "src");
const pathDemo = path.resolve(__dirname, "demo");

export default defineConfig(({mode}: ConfigEnv): UserConfig => {
    const env = loadEnv(mode, pathDemo);
    return {
        resolve: {
            alias: {
                "@": pathSrc,
            },
        },
        css: {
            // CSS 预处理器
            devSourcemap: true,
            preprocessorOptions: {
                //define global scss variable
                scss: {
                    javascriptEnabled: true,
                    additionalData: `
            @use "@/styles/variables.scss" as *;
          `,
                },
            },
        },
        server: {
            host: "0.0.0.0",
            port: Number(env.VITE_APP_PORT),
            open: false, // 运行是否自动打开浏览器
            proxy: {
                // 反向代理解决跨域
                // [env.VITE_APP_BASE_API]: {
                //     target: "http://vapi.youlai.tech", // 线上接口地址
                //     // target: 'http://localhost:8989',  // 本地接口地址 , 后端工程仓库地址：https://gitee.com/youlaiorg/youlai-boot
                //     changeOrigin: true,
                //     rewrite: (path) =>
                //         path.replace(new RegExp("^" + env.VITE_APP_BASE_API), ""), // 替换 /dev-api 为 target 接口地址
                // },
                '^/wms_api/api/com/yvan/studio/.*': {
                    target: env.VITE_APP_BASE_API,
                    changeOrigin: false,
                },
                '^/wms_api/api/pages/.*': {
                    target: env.VITE_APP_BASE_API,
                    changeOrigin: false,
                },
                '/wms_api/login': {
                    target: env.VITE_APP_BASE_API,
                    changeOrigin: false,
                },
                '/wms_api/logout': {
                    target: env.VITE_APP_BASE_API,
                    changeOrigin: false,
                },
                '^/wms_api/api/.*': {
                    target: env.VITE_APP_BASE_API,
                    changeOrigin: false,
                },
                '^/wms_api/print/.*': {
                    target: env.VITE_APP_BASE_API,
                    changeOrigin: false,
                },
            },
        },
        build: {
            outDir: 'dist',
            sourcemap: true
        },
        plugins: [
            vue(),
            inspect(),
            OneCode(),
            createHtmlPlugin({
                // minify: isBuild,
                pages: [
                    {
                        filename: 'index.html',
                        template: 'index.html',
                        injectOptions: {
                            data: {
                                title: env.VITE_APP_TITLE,
                            },
                            tags: [
                            ],
                        },
                    },
                ],
            })
        ],

        optimizeDeps: {
            include: [
                "vue",
                "vue-router",
                "pinia",
                "axios",
                "element-plus/es/components/form/style/css",
                "element-plus/es/components/form-item/style/css",
                "element-plus/es/components/button/style/css",
                "element-plus/es/components/input/style/css",
                "element-plus/es/components/input-number/style/css",
                "element-plus/es/components/switch/style/css",
                "element-plus/es/components/upload/style/css",
                "element-plus/es/components/menu/style/css",
                "element-plus/es/components/col/style/css",
                "element-plus/es/components/icon/style/css",
                "element-plus/es/components/row/style/css",
                "element-plus/es/components/tag/style/css",
                "element-plus/es/components/dialog/style/css",
                "element-plus/es/components/loading/style/css",
                "element-plus/es/components/radio/style/css",
                "element-plus/es/components/radio-group/style/css",
                "element-plus/es/components/popover/style/css",
                "element-plus/es/components/scrollbar/style/css",
                "element-plus/es/components/tooltip/style/css",
                "element-plus/es/components/dropdown/style/css",
                "element-plus/es/components/dropdown-menu/style/css",
                "element-plus/es/components/dropdown-item/style/css",
                "element-plus/es/components/sub-menu/style/css",
                "element-plus/es/components/menu-item/style/css",
                "element-plus/es/components/divider/style/css",
                "element-plus/es/components/card/style/css",
                "element-plus/es/components/link/style/css",
                "element-plus/es/components/breadcrumb/style/css",
                "element-plus/es/components/breadcrumb-item/style/css",
                "element-plus/es/components/table/style/css",
                "element-plus/es/components/tree-select/style/css",
                "element-plus/es/components/table-column/style/css",
                "element-plus/es/components/select/style/css",
                "element-plus/es/components/option/style/css",
                "element-plus/es/components/pagination/style/css",
                "element-plus/es/components/tree/style/css",
                "element-plus/es/components/alert/style/css",
                "@vueuse/core",

                "path-to-regexp",
                "echarts",
                "vue-i18n",
            ],
        },
    };
});